#ifndef __WHIMSY_NETWORK_SOCKET_HPP__SHANHAOBO_19800429__
#define __WHIMSY_NETWORK_SOCKET_HPP__SHANHAOBO_19800429__

#include "./WhimsyNetworkAddress.hpp"

namespace Whms
{
    namespace Network
    {
        namespace Socket
        {
            struct Type : public ::Whms::Object::Base::Type
            {
                virtual ::Whms::Network::RecvResult::Type Recv(
                    ::Whms::Byte::Ptr               ioBuffPtr,
                    ::Whms::Size::In                inBuffSz,
                    ::Whms::Size::Out               outRecvSz,
                    ::Whms::Network::Address::Out   outNetAddr
                    ) = WIZ_NULL;

                WIZ_INLINE ::Whms::Network::RecvResult::Type Recv(
                    ::Whms::Network::RawPacket::Out outBuff,
                    ::Whms::Network::Address::Out   outNetAddr
                )
                {
                    return Recv(
                        outBuff.m_Buffer,
                        ::Whms::Network::RawPacket::MaxSize,
                        outBuff.m_UsedSz,
                        outNetAddr
                    );
                }
            };
        } /// end of namespace Socket
    } /// end of namespace Network
} /// end of namespace Whms

#endif /*__WHIMSY_NETWORK_SOCKET_HPP__SHANHAOBO_19800429__*/
